package rs.parser;

import java.util.ArrayList;
import java.util.List;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import rs.domain.Track;

/* Classe responsabile del parsing di un JSON relativo ai brani preferiti di un utente */
public class LovedTracksParser {

	public List<Track> parse(String response) {
		List<Track> track_list = new ArrayList<Track>();
		if (!response.substring(2,7).equals("error")) {
			try {		
				JSONObject json = (JSONObject) new JSONParser().parse(response);
				JSONObject lovedtracks = (JSONObject) json.get("lovedtracks");
				
				Object tracks = lovedtracks.get("track");
				if (tracks == null) {
					return track_list;
				}
				else if (tracks instanceof JSONObject) {
					addToList(track_list, tracks);
				}
				else {
					for (Object obj : (JSONArray)tracks) {
						addToList(track_list, obj);
					}
				}
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		return track_list;
	}

	private void addToList(List<Track> track_list, Object obj) {
		JSONObject json_obj = (JSONObject) obj;
		JSONObject artist = (JSONObject) json_obj.get("artist");
		String track_name = (String) json_obj.get("name");
		String track_artist = (String) artist.get("name");
		track_list.add(new Track(track_name, track_artist));
	}

}
